package com.tl.spider.service.schedule;

import java.util.ArrayList;
import java.util.List;

import com.tl.spider.pojo.UrlTaskPojo;
import com.tl.test.test_common_utils.CollectionsUtil;

/**
 * 任务调度类,专门负责解决URL任务的添加、删除、采集顺序等一系调度问题
 * 
 * @date 2021年7月16日
 * @author Antg
 */
public class ScheduleManager {
	private static List<UrlTaskPojo> todoList = new ArrayList<UrlTaskPojo>();

	/**
	 * 将单个任务添加到任务列表中
	 * 
	 * @param urlTaskPojo
	 *            要采集的任务
	 * @return boolean 成功返回true,失败返回false
	 * @date 2021年7月16日
	 * @author Antg
	 */
	public static boolean addTask(UrlTaskPojo urlTaskPojo) {
		if (todoList.contains(urlTaskPojo)) {
			System.out.println("任务已在待采集列表当中，本次将不再添加该任务!!!");
			return false;
		}
		return todoList.add(urlTaskPojo);
	}

	/**
	 * 将一个任务list添加到待做列表中去
	 * 
	 * @param urlTaskPojoList
	 *            任务列表
	 * @date 2021年7月17日
	 * @author Antg
	 */
	public static void addTaskList(List<UrlTaskPojo> urlTaskPojoList) {
		if (CollectionsUtil.isBlank(urlTaskPojoList)) {
			System.out.println("任务列表为空");
			return;
		}
		urlTaskPojoList.forEach(e -> {
			todoList.add(e);
		});
	}

	/**
	 * 删除任务
	 * 
	 * @param urlTaskPojo
	 * @return ture 删除成功,false 删除失败
	 * @date 2021年7月17日
	 * @author Antg
	 */
	public static boolean removeTask(UrlTaskPojo urlTaskPojo) {
		if (todoList.contains(urlTaskPojo)) {
			return todoList.remove(urlTaskPojo);
		} else {
			System.out.println("要删除的任务不在待采集列表中");
			return false;
		}
	}

	/**
	 * 获取待采集的一个任务
	 * 
	 * @return UrlTaskPojo 待采集的一个任务
	 * @date 2021年7月17日
	 * @author Antg
	 */
	public static UrlTaskPojo getUrlTaskPojo() {
		if (CollectionsUtil.isBlank(todoList)) {
			return null;
		} else {
			return todoList.remove(0);
		}
	}

	/**
	 * 返回待采集任务的整个列表
	 * 
	 * @return
	 * @date 2021年7月18日
	 * @author Antg
	 */
	public static List<UrlTaskPojo> getUrlTaskList() {
		return todoList;
	}

}
